package com.jyy.prefabricated.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jyy.prefabricated.enums.BaseTeamEnum;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 考试试卷
 */
@Data
public class ExamPaper implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer id;

    /**
     * 试卷名称
     */
    private String name;

    /**
     * 试卷编码
     */
    private String code;

    /**
     * 试卷版本
     */
    private String version;

    /**
     * 备注
     */
    private String remark;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 租户编码
     */
    private String teamCode = BaseTeamEnum.BASE.getValue();

    /**
     * 试卷区域
     */
    private List<ExamPaperArea> areas = new ArrayList<>();

    /**
     * 文档课程
     */
    private List<Integer> documentCoursesList = new ArrayList<>();

    /**
     * 录播课程
     */
    private List<Integer> recordingCoursesList = new ArrayList<>();
    /**
     * 关联线下课程
     */
    private List<Integer> courseList = new ArrayList<>();
    /**
     * 关联项目
     */
    private List<Integer> projectList = new ArrayList<>();
    /**
     * 关联课程包
     */
    private List<Integer> coursePackageList = new ArrayList<>();


    /**
     * 返回关联项目或课程集合
     */
    private List<ExamPaperGoods> goodsList = new ArrayList<>();

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;


    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
    /**
     * 板块分类id
     */
    private Integer plateId;
    /**
     * 练习分类id
     */
    private Integer exercisesId;
    /**
     * 封面
     */

    private String pic;
    /**
     * 简介
     */

    private String content;
    /**
     * 是否支持单独售卖（0不支持；1支持）
     */

    private Boolean sellStatus;
    /**
     * 是否免费（0付费；1免费）
     */
    private Integer payStatus;
    /**
     * 是否关联售卖（0否；1是）
     */
    private Boolean relevanceStatus;

    /**
     * 是否删除（0否；1是）
     */
    private Integer deleted;

    /**
     * 试卷类型（0考试，1练习）
     */
    private Integer paperStatus;

    /**
     * 售价
     */
    private Double price;

    /**
     * 原价
     */
    private BigDecimal listPrice;

    /**
     * 可分配数量
     */
    private Integer distributionNum;

    /**
     * 文档课程集合
     */
    private List<Course> dcList = new ArrayList<>();

    /**
     * 录播课程集合
     */
    private List<Course> rcList = new ArrayList<>();
    /**
     * 关联线下课程集合
     */
    private List<Course> csList = new ArrayList<>();
    /**
     * 关联项目集合
     */
    private List<ProjectInfo> pjList = new ArrayList<>();
    /**
     * 关联课程包集合
     */
    private List<CoursePackage> cpList = new ArrayList<>();


    /**
     * 企业id
     */
    private Integer trainingOrganizationId;

}